﻿#define _CRT_SECURE_NO_WARNINGS
/* fseek example */
//#include <stdio.h>
//int main ()
//{
//	FILE* pFile;
//	//打开文件
//	pFile = fopen("example.txt", "wb");
//	//写入数据
//	fputs("This is an apple.", pFile);
//	//随机读取，SEEK_SET指从头开始
//	fseek(pFile, 9, SEEK_SET);
//	//在此时的文件指针出写入数据
//	fputs(" sam", pFile);
//	//关闭文件
//	fclose(pFile);
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	//打开文件
//	FILE* pFile;
//	long size;
//	pFile = fopen("myfile.txt", "rb");
//	//注意这个文件是上面的代码中创建过的，里面写了东西，如果你没有可以自己写入一些东西
//	if (pFile == NULL)
//		perror("Error opening file");
//	else
//	{
//		//将文件指针指向文件末尾
//		fseek(pFile, 0, SEEK_END); 
//
//		size = ftell(pFile);
//		fclose(pFile);
//
//		printf("Size of myfile.txt: %ld bytes.\n", size);
//	}
//	return 0;
//}

//#include <stdio.h>
//int main()
//{
//	int n;
//	FILE* pFile;
//	char buffer[27];
//
//	pFile = fopen("myfile.txt", "w+");
//	//将大写字母依次写入
//	for (n = 'A'; n <= 'Z'; n++)
//		fputc(n, pFile);
//	//使文件指针指向文件开头
//	rewind(pFile);
//	//fread是读取文件中的信息，这里是读取26个大小为1字节的元素
//	fread(buffer, 1, 26, pFile);
//	fclose(pFile);
//
//	buffer[26] = '\0';
//	printf(buffer);
//	return 0;
//}

//#include <stdio.h>
//#include <stdlib.h>
//int main(void)
//{
//	int c; // 注意：int，非char，要求处理EOF
//	FILE* fp = fopen("test.txt", "r");
//	if (!fp) {
//		perror("File opening failed");
//		return EXIT_FAILURE;//return 1;
//	}
//	//fgetc 当读取失败的时候或者遇到文件结束的时候，都会返回EOF
//	while ((c = fgetc(fp)) != EOF) // 标准C I/O读取文件循环
//	{
//		putchar(c);
//	}
//	printf("\n");
//	//判断是什么原因结束的
//	if (ferror(fp))
//		puts("I/O error when reading");
//	else if (feof(fp))
//		puts("End of file reached successfully");
//	fclose(fp);
//}

//#include <stdio.h>
//enum { SIZE = 5 };//枚举
//int main(void)
//{
//	double a[SIZE] = { 1.,2.,3.,4.,5. };
//	FILE* fp = fopen("test.bin", "wb"); // 必须用二进制模式
//	fwrite(a, sizeof * a, SIZE, fp); // 写入 double 的数组
//	fclose(fp);
//
//	double b[SIZE];
//	fp = fopen("test.bin", "rb");
//	//fread的返回值是实际读取的元素个数
//	size_t ret_code = fread(b, sizeof * b, SIZE, fp); // 读取 double 的数组
//	if (ret_code == SIZE) {
//		puts("Array read successfully, contents: ");
//		for (int n = 0; n < SIZE; ++n)
//			printf("%f ", b[n]);
//		putchar('\n');
//	}
//	else { 
//		if (feof(fp))
//			printf("Error reading test.bin: unexpected end of file\n");
//		else if (ferror(fp)) {
//			perror("Error reading test.bin");
//		}
//	}
//	fclose(fp);
//}
//
//#include <stdio.h>
//#include <windows.h>
////VS2022 WIN11环境测试
//int main()
//{
//	FILE* pf = fopen("test.txt", "w");
//	fputs("abcdef", pf);//先将代码放在输出缓冲区
//	printf("睡眠10秒-已经写数据了，打开test.txt文件，发现文件没有内容\n");
//	Sleep(10000);
//	printf("刷新缓冲区\n");
//	fflush(pf);//刷新缓冲区时，才将输出缓冲区的数据写到文件（磁盘）
//	//注：fflush 在高版本的VS上不能使用了
//	printf("再睡眠10秒-此时，再次打开test.txt文件，文件有内容了\n");
//	Sleep(10000);
//	fclose(pf);
//	//注：fclose在关闭文件的时候，也会刷新缓冲区
//	pf = NULL;
//	return 0;
//}